#ifndef __COMPLEX_H_INCLUDED__
#define __COMPLEX_H_INCLUDED__

#include<iostream>

class Complex
{
  private:
    double real;//atribute
    double imag;//atribute
  public:
    Complex();//constructor implicit
    Complex(double , double );//constructor explicit
    Complex(const Complex&);//constructor de copiere
    Complex(const Complex*);//constructor de copiere
    ~Complex();//desctructor

    double getReal();//acces partea reala
    double getImag();
    void setReal(double);//modificator
    void setImag(double);

    Complex Suma(const Complex&);
    Complex Suma(const Complex*);
    Complex Suma(double);
    Complex Scadere(const Complex&);
    Complex Scadere(const Complex*);
    Complex Scadere(double);
    Complex Inmultire(const Complex&);
    Complex Inmultire(const Complex*);
    Complex Inmultire(double);
    Complex Impartire(const Complex&);
    Complex Impartire(const Complex*);
    Complex Impartire(double);
    Complex Conjugat(const Complex&);
    Complex Conjugat(const Complex*);
    Complex Radical(void);

    Complex operator+(const Complex&);
    Complex operator+(const Complex*);
    Complex operator+(double);
    Complex operator-(const Complex&);
    Complex operator-(const Complex*);
    Complex operator-(double);
    Complex operator*(const Complex&);
    Complex operator*(const Complex*);
    Complex operator*(double);
    Complex operator/(const Complex&);
    Complex operator/(const Complex*);
    Complex operator/(double);
    Complex operator^(int);
    bool operator==(const Complex&);
    bool operator==(const Complex*);
    bool operator==(double);
    friend bool operator==(double, const Complex&);
    bool operator!=(const Complex&);
    bool operator!=(const Complex*);
    bool operator!=(double);
    friend bool operator!=(double, const Complex&);
    bool operator<(const Complex&);
    bool operator<(const Complex*);
    bool operator<(double );
    friend bool operator<(double, const Complex&);
    bool operator<=(const Complex&);
    bool operator<=(const Complex*);
    bool operator<=(double);
    friend bool operator<=(double, const Complex&);
    bool operator>(const Complex&);
    bool operator>(const Complex*);
    bool operator>(double );
    friend bool operator>(double, const Complex &);
    bool operator>=(const Complex&);
    bool operator>=(const Complex*);
    bool operator>=(double);
    friend bool operator>=(double, const Complex &);
    Complex operator++();
    Complex operator++(int);
    Complex operator--();
    Complex operator--(int);
    friend std::istream& operator>>(std::istream& ,Complex&);
    friend std::ostream& operator<<(std::ostream& ,Complex);
    friend class NumereComplexe;  
};

#endif
